#pragma once

class CScene:
	public IScene,
	public ITypeRenderer,
	public IThread
{
public:
	CScene();
	~CScene();

	void		RenderType(uint arg);
	
	WorldMgr*	GetWorldMgr();
	SkydomeMgr*	GetSkydomeMgr();

private:
	virtual int	ThreadLoop();
	void		InitializeScene();

	WorldMgr*	m_worldMgr;
	SkydomeMgr*	m_skydomeMgr;

	void		ApplyCamera(Camera* camera);

	void		MoveFreeCamera();

	void		RenderOpaque();
	void		RenderLights();
	void		RenderSkydome();

	Camera*		m_freeCamera;
	bool		m_allowCameraMovement;
};

